package designPattern.singleton单例模式.demo03;

public class SingletonDemo03 {

    public static void main(String[] args) {
        Singleton instance1 = Singleton.getInstance();
        Singleton instance2 = Singleton.getInstance();
        System.out.println(instance1 == instance2);
        System.out.println(instance1.hashCode());
        System.out.println(instance2.hashCode());
    }
}

// 懒汉式-静态方法: 线程不安全(单线程可以使用)
class Singleton {

    private static Singleton instance;

    private Singleton() {}

    // 调用方法时才创建实例
    public static Singleton getInstance() {
        // 如果前两个线程同时执行到下面这条判断语句,可能造成 new 了两个对象, 因此线程不安全
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}

